package com.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/** 防止重复提交，通过分布式锁，限制同一个api接口并发时多次重复提交
 * @author ben.huang
 */
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface AntiReplay {

    /**
     * 获取锁重试时间，默认0ms，也就是不许重试，加锁失败，立即返回
     * 产生竞争时，重试获取锁的最长等待时间，在改时间内如果没有获取到锁，则失败
     * @return
     */
    int tryLockTime() default 0;


    /**
     * 自定义的Key,不填的话默认“”，代码中可以自定义拼接
     *  需要自己提供默认的话，在注解使用时赋值即可
     * @return
     */
    String key() default "";
}
